import java.util.Random;

/**
 * Created with IntelliJ IDEA.
 * Description: 软件工程自顶向下，逐步细化的设计过程
 */
public class Test {
    /*public static void main(String[] args) {
        *//*产生一个10 * 10的二维随机整型方阵，先求出每一行的最大值和每一列的最小值*//*
        *//*求10个最大值中的最小值，10个最小值中的最大值*//*
        *//*求这两个数之差的平方*//*
    }

    public static void main(String[] args) {
        *//*产生一个10 * 10的二维随机整型方阵，先求出每一行的最大值和每一列的最小值*//*
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                num[i][j] = random.nextInt(100);
            }
        }
        *//*求出每一行的最大值*//*
        for (int i = 0; i < 10; i++) {
            max[i] = num[i][0];
            for (int j = 0; j < 10; j++);
            *//*比较得到 i 行最大值max[i]*//*
        }
        *//*求出每一列的最小值*//*
        for (int i = 0; i < 10; i++) {
            min[i] = num[0][i];
            for (int j = 0; j < 10; j++);
            *//*比较得到 i 列最小值min[i]*//*
        }
        *//*求10个最大值中的最小值，10个最小值中的最大值*//*
        for (int i = 0; i < 10; i++);
        *//*比较得到10个最大值中的最小值*//*
        for (int i = 0; i < 10; i++);
        *//*比较得到10个最小值中的最大值*//*
        *//*求这两个数之差的平方*//*
        System.out.println((num1 - num2) * (num1 - num2));
    }*/

    public static void main(String[] args) {
        /*产生一个10 * 10的二维随机整型方阵，先求出每一行的最大值和每一列的最小值*/
        int[][] num = new int[10][10];
        Random random = new Random();
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                num[i][j] = random.nextInt(100);
            }
        }
        /*求出每一行的最大值*/
        int[] max = new int[10];
        for (int i = 0; i < 10; i++) {
            max[i] = num[i][0];
            for (int j = 0; j < 10; j++) {
                /*比较得到 i 行最大值max[i]*/
                if(max[i] < num[i][j]) {
                    max[i] = num[i][j];
                }
            }
        }
        /*求出每一列的最小值*/
        int[] min = new int[10];
        for (int i = 0; i < 10; i++) {
            min[i] = num[0][i];
            for (int j = 0; j < 10; j++) {
                /*比较得到 i 列最小值min[i]*/
                if(min[i] > num[j][i]) {
                    min[i] = num[j][i];
                }
            }
        }
        /*求10个最大值中的最小值，10个最小值中的最大值*/
        int maxMin = max[0];
        for (int i = 1; i < 10; i++) {
            /*比较得到10个最大值中的最小值*/
            if(maxMin > max[i]) {
                maxMin = max[i];
            }
        }

        int minMax = min[0];
        for (int i = 1; i < 10; i++) {
            /*比较得到10个最小值中的最大值*/
            if(minMax < min[i]) {
                minMax = min[i];
            }
        }
        /*求这两个数之差的平方*/
        System.out.println((maxMin - minMax) * (maxMin - minMax));
    }
}
